package cn.kent.high.questions.timer;


import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;

/**
 * 当一个Timer任务执行报错，其他Timer任务将会自动终止
 * 如下为复现代码： 任务1执行报错，任务2将不会执行
 *
 * 解决方法：使用{@link java.util.concurrent.ScheduledThreadPoolExecutor#schedule(Runnable, long, TimeUnit)} 不会抛出异常
 */
public class TimerTest {
    static Timer timer = new Timer();
    public static void main(String[] args) {
        // 添加任务，延迟500ms执行
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("----ont task----");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                throw new RuntimeException("error");
            }
        }, 500);

        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("----two task----");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                throw new RuntimeException("error");
            }
        }, 1000);


    }
}
